package cn.schoolwow.quickflow.service.executor.option;

import cn.schoolwow.quickflow.QuickFlowExecutor;
import cn.schoolwow.quickflow.domain.FlowContext;
import cn.schoolwow.quickflow.domain.FlowExecutorConfig;
import cn.schoolwow.quickflow.domain.FlowExecutorOption;
import cn.schoolwow.quickflow.domain.FlowExecutorRootConfig;

public interface QuickFlowExecutorOptionOperation {
    /**
     * 设置是否开启日志记录
     */
    QuickFlowExecutor startRecord(boolean startRecord);

    /**
     * 指定流程id
     */
    QuickFlowExecutor setFlowLogId(long flowLogId);

    /**
     * 是否打印路径
     */
    QuickFlowExecutor printTrace(boolean printTrace);

    /**
     * 是否忽略中断
     */
    QuickFlowExecutor ignoreBroken(boolean ignoreBroken);

    /**
     * 是否忽略异常
     */
    QuickFlowExecutor ignoreException(boolean ignoreException);

    /**
     * 生成流程执行器信息
     * */
    FlowExecutorOption generateFlowExecuteOption();

    /**
     * 获取流程上下文
     * */
    FlowContext getFlowContext();

    /**
     * 获取当前流程配置信息
     * */
    FlowExecutorConfig getFlowExecutorConfig();

    /**
     * 获取当前主流程配置信息
     * */
    FlowExecutorRootConfig getFlowExecutorRootConfig();
}
